In serial and post-serial composition strategies intervallic processing, correspondence and pattern-making is integral to the generative mechanisms of pitch. The function i-process enables complex symbol patterns to be generated from relatively simple lists of integers.
Use this function to process and convert interval lists into symbol lists.
(setq list
(gen-random .34 12
'(2 3 6 10 11 14 -2 -3 -6 -10 -11 -14)))
=> (-3 -6 2 11 14 -6 14 -11 10 -14 -10 10)
(i-process 'j -5 43 list)
=> (j g a c n \\ v \d y \c u k u)
In the example above a list of integers representing interval difference is processed from a given start-symbol 'j. An inst-range paramter is given for a range of semitone values taking as its zero base middle C or in SCOM notation c 5. Thus -5 43 is G 4 up 4 octaves. The next example shows how chords may be processed and how pitch notation may be used rather than specific symbols to specify the start-symbol.
(i-process 'c#4 -5 43 '(0 6 (1 -6)))
=> (b b h ic)
(i-process 'c#4 'c#4 'c#5 '(0 6 (1 -6)))
=> (b b h ic)
In this next example a list of symbols denotes the start-symbol for each symbol list in a series of lists.
(i-process '(a b c) -5 43 '((2 4 5 6) ((-6 8) 11 -6 1) (4 7 0)))
=> ((a c g l r) (b -fd o i j) (c g n n))
(setq list2
(g-interval .23 :shuffle
'(2 3) '((1 2 6 11 13 14) (1 2 6))))
(i-process '(0 1 2 3 4 5) 'alto-flute list2)
=> ((a b d j w i t) (b d -d k y z o) (c i h f) (d c i g) (e g f -b))
By setting the start-symbol to nil or float seed you can randomize the start-symbol to be selected from any symbol in the given range.
(i-process nil -5 43 list)
=> (\` ] w y \d v p ^ s ] o e o) ...
(i-process .45 -5 43 list)
=> (f c -e -c j x r \` u _ q g q)
(i-process nil 'alto-flute list2)
=> ((g h j p ] o z) (m o i v h i t) (x ^ ] [) (^ ] w u) (x z y s))
All sublists randomize the start-symbol (in the given range).